Testing is a normal part of the software development process. Software under development is commonly tested by providing various types of input to the software and observing the software's behavior. A person may provide the input. For example, in an interactive application, such as a web application, a person could test the application by manually providing various types of input to the software through a browser. However, in many cases, the process of providing input is automated.
Developing automated test specifications and scenarios can be a cumbersome task because of the tools used to create the test specifications and the knowledge requirements. As such, developers often create the test specifications as they may have detailed knowledge about how the code works, and thus may be able to devise appropriate tests for the code. This makes it difficult for non-developers or less-technically inclined individuals to develop tests without assistance of developers. In addition, the tools that are designed for non-developers are limited.